1. Field of the Invention
This invention generally relates to multifunction peripheral (MFP) devices and, more particularly to a system and method for controlling random access memory (RAM) allocation in embedded control systems for MFP products.
2. Description of the Related Art
Multifunction peripheral products are conglomerations of many independent components: Fax, Copier, Printer, and Scanner. When sharing a common microprocessor-based platform, each of these components requires its own separate RAM memory areas for operation. The “random” in RAM means that the contents of each byte can be directly accessed without regard to the bytes before or after it. In any given memory configuration for the device, the developer must make a best “guess” as to the amount of RAM that should allocated to each component, given that the total device RAM is limited. This estimate does not take special use cases into consideration, and doesn't permit the device to be tuned or adjusting after the product is released.
RAM is used to access the component operating system, and to store jobs to be processed by each respective component. For example, a MFP device may have 160 megabytes (MB) of RAM. 40 MB may be allocated to the copier, 50 MB to the printer, 40 MB to the scanner, and 30 MB to the fax. If the copier operating system occupies 10 MB of RAM, 30 MB of RAM remain for the temporary storage of documents to be printed. If a 35 MB print job is to be processed, the job will be slowed as the documents cannot be accessed efficiently. The slow printing process will occur even though large amounts of RAM (assigned to the other components) remains unoccupied.
One obvious solution to the problem is to increase the amount of RAM. However, RAM is expensive and user demands for MFP capacity continue to increase. Additional memory, such as Flash can be added to the MFP, but the access times are poor compared to RAM. Prior art solutions to this problem use dynamic memory allocation relating to font caching, adaptive data compression, band buffers for pages, and communication buffers. Prior art handles memory management in one of two ways: Static or Dynamic.
Static memory allocation, as defined during product development, fixes the amount of memory allocated to each component in the system. Flexible systems that allow the user to add memory to the device typically utilize a lookup table to determine the allocation of memory to each of the various system components.
Dynamic memory allocation allows the system to reapportion memory allocated to other components to solve a temporary memory shortfall. This is usually a temporary state and the memory allocation returns to its original design time definitions. As is well known, dynamic memory typically includes static allocations to each of the MFP components, as well as a large piece of memory called a “heap”. As a component, such as the printer, runs out of memory, it will use the heap for storage. This prevents other components form using the heap, even if their need is more pressing. Contention for the heap prevents dynamic memory from being a viable solution to RAM allocation, as the RAM allocation must be well balanced for the MFP to operate effectively with respect to all its components.
It would be advantageous if the efficiency of an MFP device was not limited by the RAM allocations.
It would be advantageous if the allocation of RAM to the various components of an MFP could be made adaptively, according the need on the user.
It would be advantageous if the user could select and control the allocation of RAM to the MFP components.